package com.hlkj.pay.app.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import javax.validation.Valid;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.pay.infrastructure.model.merchant.MerchantConfigDO;
import com.hlkj.pay.vo.admin.req.user.AdminUserCallTranPwdReq;
import com.hlkj.pay.vo.admin.req.user.AdminUserUpdateTranPwdReq;
import com.hlkj.pay.vo.merchant.req.MerchantConfigReq;
import com.hlkj.pay.vo.merchant.req.info.MerchantFeeConfigReq;
import com.hlkj.pay.vo.merchant.req.info.MerchantInfoUpdateReq;
import com.hlkj.pay.vo.merchant.req.info.MerchantRegisterReq;
import com.hlkj.pay.vo.merchant.req.info.UpdateMerchantStatusReq;
import com.hlkj.pay.vo.merchant.resp.info.MerchantFeeConfigResp;
/**
 * @author HlpayTeam
 * @date 2024/09/12 11:39
 */
public interface IMerchantInfoAppService {
	/**
	 * 商户注册
	 * @param merchantRegisterReq
	 * @return
	 */
	CommonResult<String> register(MerchantRegisterReq merchantRegisterReq);
	/**
	 * 更新商户信息
	 * @param merchantInfoUpdateReq
	 * @return
	 */
	CommonResult<Void> updateMerchantInfo(MerchantInfoUpdateReq merchantInfoUpdateReq);
	/**
	 * 更新状态
	 * @param updateStatusReq
	 * @return
	 */
	CommonResult<Void> updateStatus(UpdateMerchantStatusReq updateStatusReq);
	/**
	 * 更新交易状态
	 * @param updateStatusReq
	 * @return
	 */
	CommonResult<Void> updateTranStatus(UpdateMerchantStatusReq updateStatusReq);
	/**
	 * 删除商户
	 * @param sn
	 * @return
	 */
	CommonResult<Void> delMerchant(String sn);
	/**
	 * save config
	 * @param merchantConfigReq
	 * @return
	 */
	CommonResult<Void> saveConfig(MerchantConfigReq merchantConfigReq);
	/**
	 * save fee config
	 * @param merchantFeeConfigReq
	 * @return
	 */
	CommonResult<Void> saveFeeConfig(@Valid MerchantFeeConfigReq merchantFeeConfigReq);
	/**
	 *
	 * @param sn
	 * @return
	 */
	CommonResult<List<MerchantFeeConfigResp>> queryFeeConfig(String sn);
	/**
	 *
	 * @param sn
	 * @return
	 */
	MerchantConfigDO queryConfig(String sn);
	/**
	 * updatePwd
	 * @param adminUserUpdatePwdReq
	 * @return
	 */
	CommonResult<Void> updateTranPwd(AdminUserUpdateTranPwdReq adminUserUpdatePwdReq);
	/**
	 *
	 * @param adminUserCallTranPwdReq
	 * @return
	 */
	CommonResult<Void> callTranPwd(AdminUserCallTranPwdReq adminUserCallTranPwdReq);
}
